DECISION: canonical Go module path for 1.0 #79

Closed
opened 2026-08-09 03:43:25 +02:00 by clawbot · 2 comments
Collaborator

Owner decision required. Blocks the 1.0 tag and the README install
instructions (#75).

The conflict

  • go.mod:1 — module sneak.berlin/go/mfer
  • mfer/mf.proto:3 — option go_package = "git.eeqj.de/sneak/mfer/mfer";

These disagree. Once 1.0 is tagged the module path is effectively permanent:
changing it later is a breaking change for every importer and requires a
major-version bump under Go's import compatibility rule.

Options

A. sneak.berlin/go/mfer (recommended). Matches the repo policy — "Go
module root: sneak.berlin/go/<name>" — and matches what go.mod already
says, so no code changes beyond the proto. It is a vanity path, which
decouples the import path from where the code is hosted; the repo can move
without breaking importers. Requires that sneak.berlin/go/mfer serve a
go-import meta tag, which needs to be verified as actually working before
the tag.

B. git.eeqj.de/sneak/mfer. Matches where the code actually lives and
needs no vanity-import hosting. But it contradicts the stated policy, and it
welds the import path to the current Gitea instance.

The proto's current value is a third thing again — git.eeqj.de/sneak/mfer/mfer
— which is neither of the above as a module root.

Recommendation

Option A. It is what policy mandates and what go.mod already declares; the
proto is simply wrong and should be corrected to match. The one real risk is
the vanity redirect not being served — that is worth verifying now rather
than discovering it at tag time.

Definition of done, once answered

  • go.mod and mfer/mf.proto go_package agree.
  • mfer/mf.pb.go is regenerated from the corrected proto and committed.
  • If option A: go install sneak.berlin/go/mfer/cmd/mfer@latest is verified
    to actually resolve from a clean module cache. If it does not, the vanity
    redirect must be fixed before 1.0, and that becomes a blocking sub-task.
  • All import paths in the repo are consistent.
  • README install instructions use the decided path (#75).
  • make check passes and docker build . succeeds.

Please answer inline and reassign to clawbot to implement.

Owner decision required. Blocks the 1.0 tag and the README install instructions (#75). ## The conflict - `go.mod:1` — `module sneak.berlin/go/mfer` - `mfer/mf.proto:3` — `option go_package = "git.eeqj.de/sneak/mfer/mfer";` These disagree. Once 1.0 is tagged the module path is effectively permanent: changing it later is a breaking change for every importer and requires a major-version bump under Go's import compatibility rule. ## Options **A. `sneak.berlin/go/mfer` (recommended).** Matches the repo policy — "Go module root: `sneak.berlin/go/<name>`" — and matches what `go.mod` already says, so no code changes beyond the proto. It is a vanity path, which decouples the import path from where the code is hosted; the repo can move without breaking importers. Requires that `sneak.berlin/go/mfer` serve a `go-import` meta tag, which needs to be verified as actually working before the tag. **B. `git.eeqj.de/sneak/mfer`.** Matches where the code actually lives and needs no vanity-import hosting. But it contradicts the stated policy, and it welds the import path to the current Gitea instance. The proto's current value is a third thing again — `git.eeqj.de/sneak/mfer/mfer` — which is neither of the above as a module root. ## Recommendation Option A. It is what policy mandates and what `go.mod` already declares; the proto is simply wrong and should be corrected to match. The one real risk is the vanity redirect not being served — that is worth verifying now rather than discovering it at tag time. ## Definition of done, once answered - `go.mod` and `mfer/mf.proto` `go_package` agree. - `mfer/mf.pb.go` is regenerated from the corrected proto and committed. - If option A: `go install sneak.berlin/go/mfer/cmd/mfer@latest` is verified to actually resolve from a clean module cache. If it does not, the vanity redirect must be fixed before 1.0, and that becomes a blocking sub-task. - All import paths in the repo are consistent. - README install instructions use the decided path (#75). - `make check` passes and `docker build .` succeeds. Please answer inline and reassign to `clawbot` to implement.
clawbot added this to the 1.0.0 milestone 2026-08-09 03:43:25 +02:00
sneak was assigned by clawbot 2026-08-09 03:43:25 +02:00
Author
Collaborator

Settled by standing policy, so adopted rather than asked (sneak can reverse it): the module path is sneak.berlin/go/mfer, which go.mod already declares, and go_package in mfer/mf.proto changes to match. mfer's own REPO_POLICIES.md sets the Go module root to sneak.berlin/go/<name>, and the import redirector already answers for it (https://sneak.berlin/go/mfer?go-get=1 points at this repo). The change is queued for when mfer resumes (paused under the current priority rule). Reassigned to clawbot.

Model: opus-5-5

Settled by standing policy, so adopted rather than asked (sneak can reverse it): the module path is `sneak.berlin/go/mfer`, which `go.mod` already declares, and `go_package` in `mfer/mf.proto` changes to match. mfer's own `REPO_POLICIES.md` sets the Go module root to `sneak.berlin/go/<name>`, and the import redirector already answers for it (`https://sneak.berlin/go/mfer?go-get=1` points at this repo). The change is queued for when mfer resumes (paused under the current priority rule). Reassigned to clawbot. Model: opus-5-5
sneak was unassigned by clawbot 2026-09-23 08:05:37 +02:00
clawbot self-assigned this 2026-09-23 08:05:37 +02:00
Author
Collaborator

Opened #144: go_package in mfer/mf.proto is now sneak.berlin/go/mfer/mfer, matching the module path in go.mod, with mfer/mf.pb.go and mfer/mf.proto.sha256 regenerated by make generate. No other file used git.eeqj.de/sneak/mfer as an import path. https://sneak.berlin/go/mfer?go-get=1 still points at this repository.

Model: opus-5-5

Opened https://git.eeqj.de/sneak/mfer/pulls/144: `go_package` in `mfer/mf.proto` is now `sneak.berlin/go/mfer/mfer`, matching the module path in `go.mod`, with `mfer/mf.pb.go` and `mfer/mf.proto.sha256` regenerated by `make generate`. No other file used `git.eeqj.de/sneak/mfer` as an import path. `https://sneak.berlin/go/mfer?go-get=1` still points at this repository. Model: opus-5-5
Sign in to join this conversation.