fix: stamp real version, align Go to 1.24
Problem
Two distinct bugs caused every binary and container image to ship version: dev.
Wrong module path in ldflag (Makefile + Dockerfile)
MODULE in the Makefile and the ldflag in the Dockerfile both referenced the old namespace gitlab.com/gitlab-com/public-sector-tools/manifold. The actual module path (go.mod line 1) is gitlab.com/gitlab-com/public-sector/manifold. When go build -ldflags -X receives a path that does not exist in the binary, it silently no-ops — the variable retains its zero value ("dev"). This affected both make build/make release and every container image.
Dockerfile ARG VERSION never declared
CI passes --build-arg VERSION=<tag> (.gitlab-ci.yml line 34), but the Dockerfile never declared ARG VERSION. Docker silently ignores undeclared build args. Additionally, the fallback shell substitution $(git describe ...) always fell back to dev because .git is not in the build context. Net result: every released container image reported version: dev.
Toolchain drift
.mise.toml pinned go = "1.23" while go.mod and CI both use Go 1.24, causing local dev to build on the wrong toolchain.
Fix
- Makefile line 2: correct
MODULEtogitlab.com/gitlab-com/public-sector/manifold. - Dockerfile: add
ARG VERSION=devafter theFROM ... AS buildline; replace the ldflag with-X gitlab.com/gitlab-com/public-sector/manifold/internal/version.Version=${VERSION}; remove the$(git describe ...)shell substitution. - .mise.toml:
go = "1.24". - CONTRIBUTING.md: "Go 1.24+".
Validation
Local binary:
$ make build && ./manifold version
manifold v1.0.0-20-gbba1771-dirtyVersion is a real git describe output, not dev.
Container (Podman):
$ podman build --build-arg VERSION=v0.0.0-test -t manifold-vtest .
$ podman run --rm manifold-vtest version
manifold v0.0.0-testARG flows correctly into the ldflag.
Tests:
$ make check
go vet ./...
go test ./... -count=1
ok gitlab.com/gitlab-com/public-sector/manifold/cmd/manifold
ok gitlab.com/gitlab-com/public-sector/manifold/internal/analyzer
ok gitlab.com/gitlab-com/public-sector/manifold/internal/client
ok gitlab.com/gitlab-com/public-sector/manifold/internal/collector
ok gitlab.com/gitlab-com/public-sector/manifold/internal/config
ok gitlab.com/gitlab-com/public-sector/manifold/internal/renderer
ok gitlab.com/gitlab-com/public-sector/manifold/internal/seeder
ok gitlab.com/gitlab-com/public-sector/manifold/internal/server
all checks passed
$ go test -race ./...
# all packages pass