tooling: adopt go tool directives; rename air→dev; bundle fmt drift - Justfile: rename `air:` to `dev:`, body uses `go tool air`; the three migrate recipes use `go tool migrate`; `fmt` adds `go fix ./...`. Stale `brew install golang-migrate` comment block replaced with the one-line `go get -tool` bootstrap hint. - README.md: quickstart says `just dev`. - go.mod: declare github.com/air-verse/air and golang-migrate's cmd in the `tool` block (Go 1.24+) so contributors never need a separate install step. Updates go.sum accordingly. - internal/domain/stats/repository.go: pre-existing `HostSplit` indent drift + trailing newline, surfaced by goimports inside the new fmt recipe.
docker: stabilize web-builder paths and bump builder Go to 1.26 Two related Dockerfile correctness fixes uncovered while validating the review pass: 1. The web-builder stage used WORKDIR /web with vite's relative outDir ../internal/server/web/dist resolving to /internal/server/web/dist at the container root — working only by relative-path coincidence. Mirror the host repo layout inside /src so the path is /src/internal/server/web/dist in both stages, making the COPY --from explicit and stable against any future WORKDIR or outDir change. 2. golang:1.25-alpine no longer compiles the codebase: the auxilia/culpa dep uses errors.AsType which is in 1.26+. Bump the builder image to golang:1.26-alpine and the go.mod directive from 1.25.0 to 1.26.0 so they agree on the actual minimum. Verified: docker build (full multi-stage) green; produced binary runs.
feat(config): viper-loaded config with fail-fast validation
feat: bootstrap lethe server skeleton + wire contract