code: func validateStableVersion(remoteVersion, clientVersion string) (string, error) {
  	verRemote, err := versionutil.ParseGeneric(remoteVersion)
  	if err != nil {
  		return "", errors.Wrap(err, "remote version error")
  	}
  	verClient, err := versionutil.ParseGeneric(clientVersion)
  	if err != nil {
  		return "", errors.Wrap(err, "client version error")
  	}
  	// If the remote Major version is bigger or if the Major versions are the same,
  	// but the remote Minor is bigger use the client version release. This handles Major bumps too.
  	if verClient.Major() < verRemote.Major() ||
  		(verClient.Major() == verRemote.Major()) && verClient.Minor() < verRemote.Minor() {
  		estimatedRelease := fmt.Sprintf("stable-%d.%d", verClient.Major(), verClient.Minor())
  		klog.Infof("remote version is much newer: %s; falling back to: %s", remoteVersion, estimatedRelease)
  		return estimatedRelease, nil
  	}
  	return remoteVersion, nil
  }
docs: // Validate if the remote version is one Minor release newer than the client version.
  // This is done to conform with "stable-X" and only allow remote versions from
  // the same Patch level release.