The standing "no //nolint anywhere" rule (handoff anti-relitigation set) was honored by Phases 2-4 but inherited template code in core/database.go, middleware/ratelimit.go, and health/handler.go carried 6 pragmas from the original template import. Replacing each with proper error handling rather than silencing the linter: core/database.go NewDatabase ping-failure path: propagates db.Close() error via multi-%w fmt.Errorf rather than discarding it via _ = db.Close(). Pattern matches the existing rollback error wrap on line 102. InTx + InTxWithOptions panic-recovery defer: rollback failure now logs via slog.Error before re-panicking, rather than discarding the error via _ = tx.Rollback(). The original error context is preserved by the panic; the rollback failure is observable. jitteredDuration: switches from math/rand/v2 to crypto/rand + math/big. The function runs once per pool init at startup so the per-call cost (~microseconds) is irrelevant. Eliminates the gosec G404 trigger without a global exclude (handoff anti-relitigation: "don't add new excludes for one-off issues"). Adds the missing maxJitter <= 0 guard that the rand.Int64N call would have panicked on with a base smaller than 7ns. middleware/ratelimit.go writeRateLimitExceeded: json.NewEncoder().Encode error is now logged via slog.Error rather than discarded. slog is already imported and used elsewhere in the file (line 60). health/handler.go writeStatus: same pattern; adds log/slog import. Brings the file in line with the rest of the codebase's slog-everywhere discipline. After: zero //nolint pragmas anywhere in backend Go code (grep -rn "//nolint" returns nothing). golangci-lint run ./... reports 0 issues. All unit tests pass under -race; all integration tests pass under -race -tags=integration with the testcontainer Postgres. Surfaced by the pre-Phase-5 cross-phase alignment audit. Cleared as part of finishing the Phase 0 lint-discipline alignment so Phases 5+ inherit a fully consistent codebase. |
||
|---|---|---|
| .. | ||
| handler.go | ||