version: "2" run: timeout: 5m linters: enable: - errcheck - govet - ineffassign - staticcheck - unused - gosec - bodyclose - copyloopvar - durationcheck - errname - errorlint - exhaustive - misspell - nilerr - prealloc - unconvert - unparam - wastedassign settings: gosec: excludes: - G104 # Allow unhandled errors in fire-and-forget (notifications) errcheck: exclude-functions: - (*os/exec.Cmd).Start # Fire-and-forget for notifications - (*os.File).Close # Deferred close — error irrelevant after read - (io.Closer).Close # Same pattern for interfaces - (*compress/gzip.Reader).Close - (*archive/tar.Reader).Close - (net.Conn).Close # Best-effort cleanup - os.Remove # Best-effort cleanup of temp files - os.RemoveAll - os.Unsetenv # Test-only, always succeeds - fmt.Fprintf # Terminal output — error never actionable - fmt.Printf - fmt.Println - (*github.com/fatih/color.Color).Fprintf - (*github.com/fatih/color.Color).Printf - (*github.com/fatih/color.Color).Println exhaustive: default-signifies-exhaustive: true misspell: locale: US exclusions: paths: - dist formatters: enable: - gofmt - goimports exclusions: paths: - dist