The lint stage only needs golangci-lint (built into base image) and
gofmt for fmt-check. Neither make fmt-check nor make lint uses the
goimports binary directly. Removing it makes the lint stage faster,
which is the whole point of the multi-stage split.
goimports is only used by 'make fmt' which is a local developer
tool, not run during Docker builds.
- Add dedicated lint stage using golangci/golangci-lint:v2.10.1 image
(pinned by sha256 digest) for fast formatting and lint checks
- Keep build stage with golang:1.25-alpine for tests and compilation
- Remove manual golangci-lint download/install from builder stage
- Add fmt-check Makefile target for standalone format checking
- Refactor check target to use fmt-check, lint, test dependencies
The lint stage uses the official golangci-lint image which has the
linter pre-installed, eliminating the need to download it on every
build. Lint failures now surface immediately without waiting for
the download step.
closes#151