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 MODULE to gitlab.com/gitlab-com/public-sector/manifold.
  • Dockerfile: add ARG VERSION=dev after the FROM ... AS build line; 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-dirty

Version 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-test

ARG 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

Merge request reports

Loading