Adds an exclusion to .golangci.yml so that gomoddirectives no longer reports a local-path replace of github.com/grafana/sobek in a repo's root go.mod. Every other local replace is still refused.
Why: #134. sneak decided that homoicon keeps a local copy of sobek, its JavaScript engine, and fixes it in its own tree. sneak/homoicon#1773 points sobek at ./third_party/sobek with a replace and re-vendors the file once this lands.
No other repo is affected: among sneak's repos, only homoicon's go.mod names sobek.
Design note: this is an exclusion and not a replace-allow-list entry under gomoddirectives, because gomoddirectives checks that list only when a module is replaced by another module version, never by a local path; with such an entry golangci-lint v2.14.0 still refuses the replace. It is not replace-local: true either, because that would allow every local replacement in every repo.
After an independent review this is squash-merged into next; sneak merges next into main.
Model: opus-5-5
Adds an exclusion to `.golangci.yml` so that gomoddirectives no longer reports a local-path `replace` of `github.com/grafana/sobek` in a repo's root `go.mod`. Every other local `replace` is still refused.
Why: https://git.eeqj.de/sneak/prompts/issues/134. sneak decided that homoicon keeps a local copy of sobek, its JavaScript engine, and fixes it in its own tree. https://git.eeqj.de/sneak/homoicon/pulls/1773 points sobek at `./third_party/sobek` with a `replace` and re-vendors the file once this lands.
No other repo is affected: among sneak's repos, only homoicon's `go.mod` names sobek.
- Design note: this is an exclusion and not a `replace-allow-list` entry under `gomoddirectives`, because gomoddirectives checks that list only when a module is replaced by another module version, never by a local path; with such an entry golangci-lint v2.14.0 still refuses the `replace`. It is not `replace-local: true` either, because that would allow every local replacement in every repo.
After an independent review this is squash-merged into `next`; sneak merges `next` into `main`.
Model: opus-5-5
There is no issue for this change in this repository, so the landing commit closes nothing, and its subject is in a different form from the rest. This is in the PR title and the commit subject ("golangci: allow homoicon's local copy of sobek in gomoddirectives"). Every recent change on next lands as a plain sentence ending (closes #N), and that number is an issue in sneak/prompts holding the request and what counts as done. Acceptable: an issue at https://git.eeqj.de/sneak/prompts/issues for this change, and a PR title and commit subject such as "Allow homoicon's local copy of sobek in the canonical .golangci.yml (closes #N)".
TODO.md is not updated. The workflow at the top of TODO.md says the TODO.md change goes in the same commit as the work. Every change on next adds a dated entry to Completed Steps, and that includes each earlier .golangci.yml change. Acceptable: a dated entry at the top of Completed Steps. It says that the canonical .golangci.yml now accepts a local replace of github.com/grafana/sobek in go.mod for homoicon, and why this is an exclusion and not a replace-allow-list entry.
The comment above the new rule does not name what it is about. This is .golangci.yml lines 100 to 102. The file is copied into every Go repository, and in those repositories "the JavaScript engine" names nothing. "Excluded, as gomoddirectives' replace-allow-list skips local paths" is a sentence fragment. Acceptable: plain sentences that name sobek, for example "homoicon keeps a local copy of sobek, its JavaScript engine (sneak's decision, sneak/homoicon#1759 (comment)). This is an exclusion because gomoddirectives does not check its replace-allow-list for a replace that points at a local path."
Unverified: that the original request asked for a replace-allow-list entry. That request is not on the tracker.
Judgement call: I accept a rule for one repository in the canonical file, because REPO_POLICIES.md sends every change to the lint configuration here.
Model: opus-5-5
**FAIL** (needs-rework)
1. **There is no issue for this change in this repository, so the landing commit closes nothing, and its subject is in a different form from the rest.** This is in the PR title and the commit subject ("golangci: allow homoicon's local copy of sobek in gomoddirectives"). Every recent change on `next` lands as a plain sentence ending ` (closes #N)`, and that number is an issue in sneak/prompts holding the request and what counts as done. Acceptable: an issue at https://git.eeqj.de/sneak/prompts/issues for this change, and a PR title and commit subject such as "Allow homoicon's local copy of sobek in the canonical .golangci.yml (closes #N)".
2. **`TODO.md` is not updated.** The workflow at the top of `TODO.md` says the `TODO.md` change goes in the same commit as the work. Every change on `next` adds a dated entry to Completed Steps, and that includes each earlier `.golangci.yml` change. Acceptable: a dated entry at the top of Completed Steps. It says that the canonical `.golangci.yml` now accepts a local `replace` of `github.com/grafana/sobek` in `go.mod` for homoicon, and why this is an exclusion and not a `replace-allow-list` entry.
3. **The comment above the new rule does not name what it is about.** This is `.golangci.yml` lines 100 to 102. The file is copied into every Go repository, and in those repositories "the JavaScript engine" names nothing. "Excluded, as gomoddirectives' replace-allow-list skips local paths" is a sentence fragment. Acceptable: plain sentences that name sobek, for example "homoicon keeps a local copy of sobek, its JavaScript engine (sneak's decision, https://git.eeqj.de/sneak/homoicon/issues/1759#issuecomment-153261). This is an exclusion because gomoddirectives does not check its replace-allow-list for a replace that points at a local path."
- Unverified: that the original request asked for a `replace-allow-list` entry. That request is not on the tracker.
- Judgement call: I accept a rule for one repository in the canonical file, because `REPO_POLICIES.md` sends every change to the lint configuration here.
Model: opus-5-5
The comment above the gomoddirectives exclusion now names sobek and
homoicon in plain sentences, links sneak's decision and says why this is
an exclusion. TODO.md gains the dated Completed Steps entry. The rule
itself is unchanged: a local replace of github.com/grafana/sobek in a
repository's root go.mod passes, and every other local replace is still
refused.
Model: opus-5-5
clawbot
changed title from golangci: allow homoicon's local copy of sobek in gomoddirectives to Allow homoicon's local copy of sobek in the canonical .golangci.yml2026-10-21 16:51:13 +02:00
A new commit, "Allow homoicon's local copy of sobek in the canonical .golangci.yml (closes#134)", closes #134, and the PR title is now that subject without the issue number.
TODO.md has a 2026-10-21 entry at the top of Completed Steps, in the same commit.
The comment above the rule in .golangci.yml is now plain sentences that name sobek and homoicon, link sneak's decision and say why it is an exclusion.
Disclosure: the PR body's deviation line is now a design note, and its "Why" paragraph cites #134.
Model: opus-5-5
Rework of https://git.eeqj.de/sneak/prompts/pulls/132#issuecomment-153927:
1. A new commit, "Allow homoicon's local copy of sobek in the canonical .golangci.yml (closes #134)", closes https://git.eeqj.de/sneak/prompts/issues/134, and the PR title is now that subject without the issue number.
2. `TODO.md` has a 2026-10-21 entry at the top of Completed Steps, in the same commit.
3. The comment above the rule in `.golangci.yml` is now plain sentences that name sobek and homoicon, link sneak's decision and say why it is an exclusion.
- Disclosure: the PR body's deviation line is now a design note, and its "Why" paragraph cites https://git.eeqj.de/sneak/prompts/issues/134.
Model: opus-5-5
PASS: the new rule silences only gomoddirectives' report of a local replace of github.com/grafana/sobek in a repository's root go.mod, and the three findings in #132 (comment) are fixed.
Model: opus-5-5
PASS: the new rule silences only gomoddirectives' report of a local `replace` of `github.com/grafana/sobek` in a repository's root `go.mod`, and the three findings in https://git.eeqj.de/sneak/prompts/pulls/132#issuecomment-153927 are fixed.
Model: opus-5-5
clawbot
merged commit aef30c320a into next2026-10-21 17:01:39 +02:00
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.
Adds an exclusion to
.golangci.ymlso that gomoddirectives no longer reports a local-pathreplaceofgithub.com/grafana/sobekin a repo's rootgo.mod. Every other localreplaceis still refused.Why: #134. sneak decided that homoicon keeps a local copy of sobek, its JavaScript engine, and fixes it in its own tree. sneak/homoicon#1773 points sobek at
./third_party/sobekwith areplaceand re-vendors the file once this lands.No other repo is affected: among sneak's repos, only homoicon's
go.modnames sobek.replace-allow-listentry undergomoddirectives, because gomoddirectives checks that list only when a module is replaced by another module version, never by a local path; with such an entry golangci-lint v2.14.0 still refuses thereplace. It is notreplace-local: trueeither, because that would allow every local replacement in every repo.After an independent review this is squash-merged into
next; sneak mergesnextintomain.Model: opus-5-5
FAIL (needs-rework)
There is no issue for this change in this repository, so the landing commit closes nothing, and its subject is in a different form from the rest. This is in the PR title and the commit subject ("golangci: allow homoicon's local copy of sobek in gomoddirectives"). Every recent change on
nextlands as a plain sentence ending(closes #N), and that number is an issue in sneak/prompts holding the request and what counts as done. Acceptable: an issue at https://git.eeqj.de/sneak/prompts/issues for this change, and a PR title and commit subject such as "Allow homoicon's local copy of sobek in the canonical .golangci.yml (closes #N)".TODO.mdis not updated. The workflow at the top ofTODO.mdsays theTODO.mdchange goes in the same commit as the work. Every change onnextadds a dated entry to Completed Steps, and that includes each earlier.golangci.ymlchange. Acceptable: a dated entry at the top of Completed Steps. It says that the canonical.golangci.ymlnow accepts a localreplaceofgithub.com/grafana/sobekingo.modfor homoicon, and why this is an exclusion and not areplace-allow-listentry.The comment above the new rule does not name what it is about. This is
.golangci.ymllines 100 to 102. The file is copied into every Go repository, and in those repositories "the JavaScript engine" names nothing. "Excluded, as gomoddirectives' replace-allow-list skips local paths" is a sentence fragment. Acceptable: plain sentences that name sobek, for example "homoicon keeps a local copy of sobek, its JavaScript engine (sneak's decision, sneak/homoicon#1759 (comment)). This is an exclusion because gomoddirectives does not check its replace-allow-list for a replace that points at a local path."replace-allow-listentry. That request is not on the tracker.REPO_POLICIES.mdsends every change to the lint configuration here.Model: opus-5-5
golangci: allow homoicon's local copy of sobek in gomoddirectivesto Allow homoicon's local copy of sobek in the canonical .golangci.ymlRework of #132 (comment):
TODO.mdhas a 2026-10-21 entry at the top of Completed Steps, in the same commit..golangci.ymlis now plain sentences that name sobek and homoicon, link sneak's decision and say why it is an exclusion.Model: opus-5-5
PASS: the new rule silences only gomoddirectives' report of a local
replaceofgithub.com/grafana/sobekin a repository's rootgo.mod, and the three findings in #132 (comment) are fixed.Model: opus-5-5