Rename the module to the Coffey-Labs organisation

The repositories moved off LINUXexpert-org. Here that is not a
documentation change: the old organisation was the module path, so it is
declared in go.mod and repeated in every internal import.

Leaving it would have been worse than a stale link. GitHub redirects the
repository, but a go.mod whose module line disagrees with the path it was
fetched from is an error rather than a redirect, so `go get` on the new
address would have failed against the old declaration.

go.mod, 34 files of imports, and the repository links in README and
ARCHITECTURE. go mod tidy leaves go.sum untouched -- no dependency moved,
only our own path.
This commit is contained in:
2026-08-30 15:24:18 -07:00
parent 8bf7c8e2ac
commit 12ec0c3fd4
37 changed files with 73 additions and 73 deletions
+2 -2
View File
@@ -341,8 +341,8 @@ against an already-migrated store.
whether the recreated container comes up as the server it was. That is
what would retire the flag.
[#9]: https://github.com/LINUXexpert-org/stalwart-migrator/pull/9
[#11]: https://github.com/LINUXexpert-org/stalwart-migrator/pull/11
[#9]: https://github.com/Coffey-Labs/stalwart-migrator/pull/9
[#11]: https://github.com/Coffey-Labs/stalwart-migrator/pull/11
- Quota recalculation is the one step allowed to fail without failing the
phase. Stale counters are an accounting problem; a failed cutover is one
an operator has to respond to by restoring a machine that is otherwise
+6 -6
View File
@@ -10,7 +10,7 @@ job](#recovery-is-your-job) before using it on anything you care about.
Go, standard library only — no external dependencies.
A companion to [**ihasmail**](https://github.com/LINUXexpert-org/ihasmail),
A companion to [**ihasmail**](https://github.com/Coffey-Labs/ihasmail),
a JMAP-first webmail client for Stalwart. That one is what you read your
mail in; this one is what gets the server underneath it onto a version that
speaks the protocol it needs.
@@ -24,7 +24,7 @@ is the practice this project most recommends copying: see [Rehearse on a
clone first](#rehearse-on-a-clone-first).
**It has also been used at a scale well past that, by someone else.**
[@kaya-eu](https://github.com/LINUXexpert-org/stalwart-migrator/issues/1)
[@kaya-eu](https://github.com/Coffey-Labs/stalwart-migrator/issues/1)
reported three successful 0.15.5 → 0.16.19 migrations on three servers: a
testing and a production instance, each 16 domains, 55 accounts and roughly
**221 GB** of real mail, and an arm64 home server of 1.4 GB across 181
@@ -40,7 +40,7 @@ boot](#the-store-migration-may-need-one-more-recovery-boot)), and data loss
from booting recovery mode again *after* a completed
migration (see [Do not boot recovery mode
again](#do-not-boot-recovery-mode-again-afterwards)). Their full report is
[issue #1](https://github.com/LINUXexpert-org/stalwart-migrator/issues/1).
[issue #1](https://github.com/Coffey-Labs/stalwart-migrator/issues/1).
## Before you start: two things you must fix on the server
@@ -357,7 +357,7 @@ because getting an extra recovery boot wrong is its own hazard — see [Do
not boot recovery mode again
afterwards](#do-not-boot-recovery-mode-again-afterwards). If you hit
either, that is the manual step. Reported by
[@kaya-eu](https://github.com/LINUXexpert-org/stalwart-migrator/issues/1).
[@kaya-eu](https://github.com/Coffey-Labs/stalwart-migrator/issues/1).
## A certificate that serves HTTPS may not serve the mail ports
@@ -373,7 +373,7 @@ certificate you are handed, not just to 443.
This tool does not set it for you. Like the `AcmeProvider` above, it
should, and the supplemental plan is where it belongs. Reported by
[@kaya-eu](https://github.com/LINUXexpert-org/stalwart-migrator/issues/1).
[@kaya-eu](https://github.com/Coffey-Labs/stalwart-migrator/issues/1).
## You need a named admin account before you migrate
@@ -491,7 +491,7 @@ migration, use the admin API or `stalwart-cli` against the running server.
This is Stalwart's behaviour rather than this tool's, and it is reported
here because this tool is where you learned the technique. Reported by
[@kaya-eu](https://github.com/LINUXexpert-org/stalwart-migrator/issues/1).
[@kaya-eu](https://github.com/Coffey-Labs/stalwart-migrator/issues/1).
### Why it works this way
+2 -2
View File
@@ -9,8 +9,8 @@ import (
"fmt"
"os"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
)
func runPreflight(args []string) error {
+2 -2
View File
@@ -9,8 +9,8 @@ import (
"path/filepath"
"sort"
"github.com/LINUXexpert-org/stalwart-migrator/internal/backup"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/backup"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// preservePlan lifts the run's irreplaceable inputs out of the scratch
+1 -1
View File
@@ -9,7 +9,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
func writeTemp(t *testing.T, dir, name, body string) string {
+5 -5
View File
@@ -12,11 +12,11 @@ import (
"os"
"path/filepath"
"github.com/LINUXexpert-org/stalwart-migrator/internal/applyplan"
"github.com/LINUXexpert-org/stalwart-migrator/internal/backup"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/plan"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/applyplan"
"github.com/Coffey-Labs/stalwart-migrator/internal/backup"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/plan"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
)
// runRehearse implements `stalwart-migrate rehearse` (ARCHITECTURE.md §4.9):
+2 -2
View File
@@ -7,8 +7,8 @@ import (
"flag"
"fmt"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/validate"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/validate"
)
// runReport prints what validation found for a run, from the checkpoint the
+2 -2
View File
@@ -6,8 +6,8 @@ package main
import (
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/validate"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/validate"
)
// `report` re-reads what the run recorded rather than re-checking, so the
+10 -10
View File
@@ -14,16 +14,16 @@ import (
"strings"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/applyplan"
"github.com/LINUXexpert-org/stalwart-migrator/internal/backup"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/cutover"
"github.com/LINUXexpert-org/stalwart-migrator/internal/plan"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/LINUXexpert-org/stalwart-migrator/internal/recovery"
"github.com/LINUXexpert-org/stalwart-migrator/internal/service"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stage"
"github.com/LINUXexpert-org/stalwart-migrator/internal/validate"
"github.com/Coffey-Labs/stalwart-migrator/internal/applyplan"
"github.com/Coffey-Labs/stalwart-migrator/internal/backup"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/cutover"
"github.com/Coffey-Labs/stalwart-migrator/internal/plan"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/recovery"
"github.com/Coffey-Labs/stalwart-migrator/internal/service"
"github.com/Coffey-Labs/stalwart-migrator/internal/stage"
"github.com/Coffey-Labs/stalwart-migrator/internal/validate"
)
// runRun implements `stalwart-migrate run`: the real migration.
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"fmt"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
func runStatus(args []string) error {
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"os"
"sort"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// runTenants prints who owns what, read-only.
+1 -1
View File
@@ -1,3 +1,3 @@
module github.com/LINUXexpert-org/stalwart-migrator
module github.com/Coffey-Labs/stalwart-migrator
go 1.26.5
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"sort"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/backup"
"github.com/Coffey-Labs/stalwart-migrator/internal/backup"
)
// AccountRoleOperations restores the account roles a v0.16 migration drops.
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/backup"
"github.com/Coffey-Labs/stalwart-migrator/internal/backup"
)
// The exact principal shape a real 0.15.5 reports.
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"path/filepath"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// Options configures a full backup pass. Which fields matter depends on
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"path/filepath"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
func TestBackupRunEndToEndAndResume(t *testing.T) {
+2 -2
View File
@@ -12,8 +12,8 @@ import (
"path/filepath"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
)
// ArtifactContainerDefinition is the preserved `docker inspect` of the
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// inspectJSON builds a `docker inspect` document. extra is merged into
+4 -4
View File
@@ -16,10 +16,10 @@ import (
"syscall"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/LINUXexpert-org/stalwart-migrator/internal/service"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/service"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// Artifact names this phase records. ArtifactServiceUnit is the preserved
+2 -2
View File
@@ -14,8 +14,8 @@ import (
"testing"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/service"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/service"
)
// fakeController stands in for systemd, recording call order.
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"strings"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// Options configures a Checker. Every field has a conservative default
+1 -1
View File
@@ -14,7 +14,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// writeFakeBinary creates a shell script that behaves like `stalwart
+1 -1
View File
@@ -10,7 +10,7 @@ import (
"os/exec"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// checkFunc is the closure Checker.Run uses to run and checkpoint one
+1 -1
View File
@@ -13,7 +13,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// The defaults the official Stalwart image gives every container made from
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"os"
"os/exec"
"github.com/LINUXexpert-org/stalwart-migrator/internal/service"
"github.com/Coffey-Labs/stalwart-migrator/internal/service"
)
// DeploymentKind is how a Stalwart instance appears to be run, which
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"testing"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// recordingLauncher stands in for a deployment that is not a local binary -
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"strings"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// Options configures one full recovery-mode migration cycle: starting the
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"testing"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
func TestRecoveryRunEndToEndAndResume(t *testing.T) {
+2 -2
View File
@@ -10,8 +10,8 @@ import (
"os/exec"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
)
// DefaultDockerBinary is what shells out unless a caller names another.
+2 -2
View File
@@ -17,8 +17,8 @@ import (
"runtime"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/preflight"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/preflight"
)
// assetForArch maps a Go architecture to the release asset holding the
+1 -1
View File
@@ -20,7 +20,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// tarGzWith builds a release-shaped archive containing one entry.
+3 -3
View File
@@ -10,9 +10,9 @@ import (
"strings"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/recovery"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/recovery"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// BootCheckOptions configures a normal (non-recovery-mode) boot of the
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"testing"
"time"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
func freePort(t *testing.T) int {
+2 -2
View File
@@ -9,8 +9,8 @@ import (
"sort"
"strings"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// MailboxDelta is one mailbox whose message count didn't match between the
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// jmapEnvelope mirrors the wire shape stalwartapi.Client.call() parses.
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"fmt"
"net/http"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/LINUXexpert-org/stalwart-migrator/internal/stalwartapi"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/stalwartapi"
)
// LiveOptions describes the migrated instance cutover has just started.
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"strings"
"testing"
"github.com/LINUXexpert-org/stalwart-migrator/internal/checkpoint"
"github.com/Coffey-Labs/stalwart-migrator/internal/checkpoint"
)
// A run that never captured a "before" cannot be checked against one. The