Allow homoicon's local copy of sobek in the canonical .golangci.yml #132

Merged
clawbot merged 2 commits from golangci-gomoddirectives-sobek into next 2026-10-21 17:01:39 +02:00
Collaborator

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
clawbot added the needs-review label 2026-10-21 07:15:52 +02:00
sneak was assigned by clawbot 2026-10-21 07:15:52 +02:00
clawbot added 1 commit 2026-10-21 07:15:52 +02:00
sneak/homoicon keeps a local copy of sobek, swapped in by a local-path replace
that gomoddirectives refuses: sneak/homoicon#1759

Model: opus-5-5
sneak was unassigned by clawbot 2026-10-21 15:59:54 +02:00
clawbot self-assigned this 2026-10-21 15:59:54 +02:00
Author
Collaborator

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, 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
clawbot added needs-rework and removed needs-review labels 2026-10-21 16:46:33 +02:00
clawbot added 1 commit 2026-10-21 16:50:54 +02:00
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.yml 2026-10-21 16:51:13 +02:00
Author
Collaborator

Rework of #132 (comment):

  1. 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.
  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 #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
clawbot added needs-review and removed needs-rework labels 2026-10-21 16:51:20 +02:00
Author
Collaborator

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 next 2026-10-21 17:01:39 +02:00
clawbot deleted branch golangci-gomoddirectives-sobek 2026-10-21 17:01:40 +02:00
Sign in to join this conversation.