Skip to content

chore: rename Go module path to jacaudi and complete fork housekeeping - #49

Merged
jacaudi merged 2 commits into
mainfrom
worktree-issue-36-module-path
Aug 30, 2026
Merged

chore: rename Go module path to jacaudi and complete fork housekeeping#49
jacaudi merged 2 commits into
mainfrom
worktree-issue-36-module-path

Conversation

@jacaudi

@jacaudi jacaudi commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Closes #36.

The mechanical fork-housekeeping pass. Taken now, out of phase order, because it rewrites the import block in all 18 Go files and so conflicts textually with anything in flight — and the tree is quiet right now: #39 has merged and nothing else is open. Doing it after #2 would mean rewriting #2's new code too.

What changed

chore: — the module path. github.com/nccloud/wireguard-operatorgithub.com/jacaudi/wireguard-operator, across go.mod line 1, the import block of all 18 Go files (29 import lines), and three fields in PROJECT — the repo: field plus both path: entries under resources:.

Also deletes .releaserc.json. It is inert upstream semantic-release config whose publishCmd targets ghcr.io/jodevsa/..., two forks upstream. Nothing invokes it — the only other references in the tree are in generated CHANGELOG.md history — and release-please under .github/ superseded it wholesale in #43. A trap rather than a config.

docs: — the README and ROADMAP. See the decision below.

The API-group decision

#36's acceptance criteria require this be documented either way, so: the API group stays vpn.wireguard-operator.io.

PROJECT carries domain: wireguard-operator.io with group: vpn. Renaming it would change the CRDs' fully-qualified names, forcing every existing Wireguard and WireguardPeer object to be recreated — a breaking change for no benefit beyond cosmetics, and the issue's own recommendation. The module path and the API group are independent; renaming the former does not touch the latter. Recorded in docs/ROADMAP.md § 6.2 so it does not stay implicit.

The README install section

The deploy section pointed at upstream's release asset and Helm chart. Those cannot be repointed, which is the one thing here that differed from what was expected going in:

  • jacaudi/wireguard-operator has published zero GitHub Releases. The v2.11.0 tag is the boundary tag created to bound release-please's commit scan, not a Release object — so releases/download/v2.11.0/release.yaml under jacaudi would 404.
  • There is no chart directory in the repo, and jacaudi/charts returns 404. The copier answer is has_chart=false.

Following those commands installs the diverging upstream operator, which does not carry this fork's features (spec.persistentKeepalive, for example) — directly beneath a note warning against exactly that. So both blocks are removed rather than redirected, leaving make deploy from source as the documented path.

#48 is filed to publish an OCI Helm chart as the real install route, and the README points at it.

Verification

All run locally before pushing:

gate result
grep -rn nccloud . | grep -v '^./.git/' zero matches
go build ./... / go vet ./... clean
task ci exit 0 — golangci-lint 0 issues, govulncheck 0, go mod tidy -diff clean, fmt clean
task go:integration passes, internal/controller at 78.4s
make manifests generate no diff on config api
sh hack/release-file-drift.sh release.yaml matches config/

Notes on three of those:

  • The lint ratchet was honest. This is the first change in the repo to touch every Go file, so the first real test of new-from-merge-base: origin/main. The merge base is present locally (559 commits, not a shallow clone), and the result is 0 issues — 113 would have meant the ratchet failed open, not that something broke. The 113 pre-existing findings, including Reconcile at cyclomatic complexity 121, anchor to function declaration lines rather than import lines, so they stayed suppressed. Reconcile is untouched; [P0] Replace trigger-based Deployment drift checks with declarative reconciliation #2 replaces it wholesale.
  • go mod tidy is a no-op and go.sum is unchanged, as expected — a module's own path is not recorded in go.sum. go.mod is a one-line diff.
  • internal/it is compiled by neither gate. It sits behind //go:build e2e, not integration, so task ci and task go:integration both skip it — the known [P1] CI lost its e2e tier when the template pipeline landed #44 coverage gap. Its rename was therefore verified separately with go build, go vet and go test -tags=e2e, all clean. The [P1] Flaky e2e: wstunnel spec asserts before the controller has processed the patch #45 readiness race in that package is untouched.

task fmt was run immediately after the rewrite, since jacaudi sorts before nccloud and import ordering could have shifted. It produced no reordering — the Go diff is exactly 29 insertions and 29 deletions across 18 files, every one an import line.

On tests

No new tests. This is a pure identifier rewrite with no observable behavior change — the documented exception to the mandatory-TDD rule. The existing suite is the regression test, and the assertion is that it passes unchanged, which it does, including the 78s envtest suite.

Merge

Please merge, do not squash — release-please parses each commit's type, and the two commits are typed chore: and docs: deliberately.

The module path still named the upstream organisation while the repo lives
at jacaudi. Renaming it touches go.mod, the import block of all 18 Go files,
and three fields in PROJECT — the `repo:` field plus both `path:` entries
under `resources:`, which are easy to miss.

Taken now, out of phase order, because the rewrite conflicts textually with
any branch in flight and the tree is quiet: #39 has merged and nothing else
is open.

Also deletes .releaserc.json. It is inert upstream semantic-release config
whose publishCmd targets a registry namespace two forks upstream; nothing
invokes it, and release-please under .github/ superseded it wholesale. It is
a trap rather than a config.

No behavior change — this is a pure identifier rewrite, so the existing
suite is the regression test rather than a new one. Verified: task ci passes
with golangci-lint at 0 issues (merge base present locally, so the ratchet
is honest rather than failing open), govulncheck 0, `go mod tidy -diff`
clean, and `task go:integration` passes with internal/controller at 78s,
confirming the -tags=integration build tag still matches. internal/it sits
behind //go:build e2e and so is compiled by neither gate; it was verified
separately with `go build`/`go vet`/`go test -tags=e2e`.

The API group is unchanged and stays vpn.wireguard-operator.io; the module
path and the API group are independent. That decision is recorded in
docs/ROADMAP.md § 6.2.

Refs #36
…ision

The README's deploy section pointed at upstream's release asset and Helm
chart. Following those commands installs the diverging upstream operator,
which does not carry this fork's features — spec.persistentKeepalive, for
example — directly under a note warning against exactly that.

They cannot be repointed. This fork has published zero GitHub Releases (the
v2.11.0 tag is the boundary tag created to bound release-please's commit
scan, not a Release object), has no chart directory, and jacaudi/charts does
not exist. So both blocks are removed rather than redirected, leaving
`make deploy` from source as the documented path and pointing at #48, which
tracks publishing an OCI Helm chart as the real install route.

ROADMAP § 6.2 is updated from a one-line statement of the problem to a
record of what landed, and now documents the API-group decision that #36's
acceptance criteria require be explicit either way: the group stays
vpn.wireguard-operator.io, because renaming it would change the CRDs'
fully-qualified names and force every existing Wireguard and WireguardPeer
object to be recreated, for no benefit beyond cosmetics.

Refs #36, #48
@jacaudi
jacaudi merged commit be6d4e4 into main Aug 30, 2026
9 checks passed
@jacaudi
jacaudi deleted the worktree-issue-36-module-path branch August 30, 2026 05:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P6] Fork housekeeping: Go module path

1 participant