Repository: helm/helm
Pull request #30589 (2025-02-26 15:15:52)

Move pkg/release to pkg/release/v1 to support v3 charts
This is part of HIP 20 which provides a means to have v3 charts that live alongside v2 charts while having breaking changes.

The plan is to have a different release object for v3 chart instances for at least a couple reasons:
1. So that the chart object on the release can be fundamentally different.
2. So that Helm v3 does not detect or try to work with instances of charts whose apiVersion it does not know about.

Note: it is expected that Helm v3 usage will be used long after the Helm project no longer supports it. 5 years after Helm v2 had reached end-of-life there was still usage of it.

Note: The release util package is separate from the versioned elements as it is planned to use generics to handle multiple release object versions.

<!--  Thanks for sending a pull request!  Here are some tips for you:
1. Make sure to read the Contributing Guide before submitting your PR: https://github.com/helm/helm/blob/main/CONTRIBUTING.md
2. If this PR closes another issue, add 'closes #<issue number>' somewhere in the PR summary. GitHub will automatically close that issue when this PR gets merged. Alternatively, adding 'refs #<issue number>' will not close the issue, but help provide the reviewer more context.-->

**What this PR does / why we need it**:

**Special notes for your reviewer**:

**If applicable**:
- [ ] this PR contains user facing changes (the `docs needed` label should be applied if so)
- [ ] this PR contains unit tests
- [ ] this PR has been tested for backwards compatibility



Patch:
diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go
index c8de18796..7cce9436f 100644
--- a/cmd/helm/helm.go
+++ b/cmd/helm/helm.go
@@ -34,7 +34,7 @@ import (
 	"helm.sh/helm/v4/pkg/cli"
 	"helm.sh/helm/v4/pkg/kube"
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 )
 
diff --git a/cmd/helm/history.go b/cmd/helm/history.go
index a47f97688..86fad4b04 100644
--- a/cmd/helm/history.go
+++ b/cmd/helm/history.go
@@ -29,8 +29,8 @@ import (
 	"helm.sh/helm/v4/pkg/action"
 	chart "helm.sh/helm/v4/pkg/chart/v2"
 	"helm.sh/helm/v4/pkg/cli/output"
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/cmd/helm/install.go b/cmd/helm/install.go
index 12f87cd20..3e8d04cb2 100644
--- a/cmd/helm/install.go
+++ b/cmd/helm/install.go
@@ -38,7 +38,7 @@ import (
 	"helm.sh/helm/v4/pkg/cli/values"
 	"helm.sh/helm/v4/pkg/downloader"
 	"helm.sh/helm/v4/pkg/getter"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 const installDesc = `
diff --git a/cmd/helm/list.go b/cmd/helm/list.go
index 67da22cdf..9bbe580a2 100644
--- a/cmd/helm/list.go
+++ b/cmd/helm/list.go
@@ -28,7 +28,7 @@ import (
 	"helm.sh/helm/v4/cmd/helm/require"
 	"helm.sh/helm/v4/pkg/action"
 	"helm.sh/helm/v4/pkg/cli/output"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var listHelp = `
diff --git a/cmd/helm/status.go b/cmd/helm/status.go
index 727c3df9e..d1e25dd45 100644
--- a/cmd/helm/status.go
+++ b/cmd/helm/status.go
@@ -32,7 +32,7 @@ import (
 	"helm.sh/helm/v4/pkg/action"
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
 	"helm.sh/helm/v4/pkg/cli/output"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // NOTE: Keep the list of statuses up-to-date with pkg/release/status.go.
diff --git a/cmd/helm/template.go b/cmd/helm/template.go
index c41373337..4c07dac98 100644
--- a/cmd/helm/template.go
+++ b/cmd/helm/template.go
@@ -28,7 +28,7 @@ import (
 	"sort"
 	"strings"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 
 	"github.com/spf13/cobra"
 
diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go
index 7d6cb33ec..929051306 100644
--- a/cmd/helm/upgrade.go
+++ b/cmd/helm/upgrade.go
@@ -36,7 +36,7 @@ import (
 	"helm.sh/helm/v4/pkg/cli/values"
 	"helm.sh/helm/v4/pkg/downloader"
 	"helm.sh/helm/v4/pkg/getter"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 )
 
diff --git a/pkg/action/action.go b/pkg/action/action.go
index d91ccab51..ea2dc0dd7 100644
--- a/pkg/action/action.go
+++ b/pkg/action/action.go
@@ -39,8 +39,8 @@ import (
 	"helm.sh/helm/v4/pkg/kube"
 	"helm.sh/helm/v4/pkg/postrender"
 	"helm.sh/helm/v4/pkg/registry"
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage"
 	"helm.sh/helm/v4/pkg/storage/driver"
 	"helm.sh/helm/v4/pkg/time"
diff --git a/pkg/action/get.go b/pkg/action/get.go
index 4c0683f3e..dbe5f4cb3 100644
--- a/pkg/action/get.go
+++ b/pkg/action/get.go
@@ -17,7 +17,7 @@ limitations under the License.
 package action
 
 import (
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // Get is the action for checking a given release's information.
diff --git a/pkg/action/history.go b/pkg/action/history.go
index e5ac16bfe..04743f4cd 100644
--- a/pkg/action/history.go
+++ b/pkg/action/history.go
@@ -20,7 +20,7 @@ import (
 	"github.com/pkg/errors"
 
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // History is the action for checking the release's ledger.
diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go
index b6c505807..230e9ec81 100644
--- a/pkg/action/hooks.go
+++ b/pkg/action/hooks.go
@@ -30,7 +30,7 @@ import (
 	"github.com/pkg/errors"
 	"gopkg.in/yaml.v3"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/pkg/action/install.go b/pkg/action/install.go
index ad260c361..f1896351e 100644
--- a/pkg/action/install.go
+++ b/pkg/action/install.go
@@ -48,8 +48,8 @@ import (
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
 	"helm.sh/helm/v4/pkg/postrender"
 	"helm.sh/helm/v4/pkg/registry"
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/repo"
 	"helm.sh/helm/v4/pkg/storage"
 	"helm.sh/helm/v4/pkg/storage/driver"
diff --git a/pkg/action/list.go b/pkg/action/list.go
index 5c2b1e8a1..82500582f 100644
--- a/pkg/action/list.go
+++ b/pkg/action/list.go
@@ -22,8 +22,8 @@ import (
 
 	"k8s.io/apimachinery/pkg/labels"
 
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // ListStates represents zero or more status codes that a list item may have set
diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go
index 0cd9d5d07..4006f565f 100644
--- a/pkg/action/rollback.go
+++ b/pkg/action/rollback.go
@@ -25,7 +25,7 @@ import (
 	"github.com/pkg/errors"
 
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/pkg/action/status.go b/pkg/action/status.go
index db9a3b3f0..509c52cd9 100644
--- a/pkg/action/status.go
+++ b/pkg/action/status.go
@@ -21,7 +21,7 @@ import (
 	"errors"
 
 	"helm.sh/helm/v4/pkg/kube"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // Status is the action for checking the deployment status of releases.
diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go
index bfec35fc0..fdbeb5dc8 100644
--- a/pkg/action/uninstall.go
+++ b/pkg/action/uninstall.go
@@ -26,8 +26,8 @@ import (
 
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
 	"helm.sh/helm/v4/pkg/kube"
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go
index 340f61585..e32c8dcaf 100644
--- a/pkg/action/upgrade.go
+++ b/pkg/action/upgrade.go
@@ -33,8 +33,8 @@ import (
 	"helm.sh/helm/v4/pkg/kube"
 	"helm.sh/helm/v4/pkg/postrender"
 	"helm.sh/helm/v4/pkg/registry"
-	"helm.sh/helm/v4/pkg/release"
 	releaseutil "helm.sh/helm/v4/pkg/release/util"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 )
 
diff --git a/pkg/release/util/filter.go b/pkg/release/util/filter.go
index e56752f86..f0a082cfd 100644
--- a/pkg/release/util/filter.go
+++ b/pkg/release/util/filter.go
@@ -16,7 +16,7 @@ limitations under the License.
 
 package util // import "helm.sh/helm/v4/pkg/release/util"
 
-import rspb "helm.sh/helm/v4/pkg/release"
+import rspb "helm.sh/helm/v4/pkg/release/v1"
 
 // FilterFunc returns true if the release object satisfies
 // the predicate of the underlying filter func.
diff --git a/pkg/release/util/kind_sorter.go b/pkg/release/util/kind_sorter.go
index 130b2c831..22795733c 100644
--- a/pkg/release/util/kind_sorter.go
+++ b/pkg/release/util/kind_sorter.go
@@ -19,7 +19,7 @@ package util
 import (
 	"sort"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // KindSortOrder is an ordering of Kinds.
diff --git a/pkg/release/util/manifest_sorter.go b/pkg/release/util/manifest_sorter.go
index c4ad62161..15eb76174 100644
--- a/pkg/release/util/manifest_sorter.go
+++ b/pkg/release/util/manifest_sorter.go
@@ -27,7 +27,7 @@ import (
 	"sigs.k8s.io/yaml"
 
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // Manifest represents a manifest file, which has a name and some content.
diff --git a/pkg/release/util/sorter.go b/pkg/release/util/sorter.go
index 8b1c89aa3..949adbda9 100644
--- a/pkg/release/util/sorter.go
+++ b/pkg/release/util/sorter.go
@@ -19,7 +19,7 @@ package util // import "helm.sh/helm/v4/pkg/release/util"
 import (
 	"sort"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 type list []*rspb.Release
diff --git a/pkg/release/hook.go b/pkg/release/v1/hook.go
similarity index 99%
rename from pkg/release/hook.go
rename to pkg/release/v1/hook.go
index 5ff61fdaa..1ef5c1eb8 100644
--- a/pkg/release/hook.go
+++ b/pkg/release/v1/hook.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 import (
 	"helm.sh/helm/v4/pkg/time"
diff --git a/pkg/release/info.go b/pkg/release/v1/info.go
similarity index 98%
rename from pkg/release/info.go
rename to pkg/release/v1/info.go
index 514807a35..ff98ab63e 100644
--- a/pkg/release/info.go
+++ b/pkg/release/v1/info.go
@@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 import (
 	"k8s.io/apimachinery/pkg/runtime"
diff --git a/pkg/release/mock.go b/pkg/release/v1/mock.go
similarity index 99%
rename from pkg/release/mock.go
rename to pkg/release/v1/mock.go
index 94b4d01f3..9ca57284c 100644
--- a/pkg/release/mock.go
+++ b/pkg/release/v1/mock.go
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 import (
 	"fmt"
diff --git a/pkg/release/release.go b/pkg/release/v1/release.go
similarity index 99%
rename from pkg/release/release.go
rename to pkg/release/v1/release.go
index 1a7c7b18c..74e834f7b 100644
--- a/pkg/release/release.go
+++ b/pkg/release/v1/release.go
@@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 import (
 	chart "helm.sh/helm/v4/pkg/chart/v2"
diff --git a/pkg/release/responses.go b/pkg/release/v1/responses.go
similarity index 98%
rename from pkg/release/responses.go
rename to pkg/release/v1/responses.go
index 7ee1fc2ee..2a5608c67 100644
--- a/pkg/release/responses.go
+++ b/pkg/release/v1/responses.go
@@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 // UninstallReleaseResponse represents a successful response to an uninstall request.
 type UninstallReleaseResponse struct {
diff --git a/pkg/release/status.go b/pkg/release/v1/status.go
similarity index 99%
rename from pkg/release/status.go
rename to pkg/release/v1/status.go
index edd27a5f1..8d6459013 100644
--- a/pkg/release/status.go
+++ b/pkg/release/v1/status.go
@@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package release
+package v1
 
 // Status is the status of a release
 type Status string
diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go
index 48edc3172..2b84b7f82 100644
--- a/pkg/storage/driver/cfgmaps.go
+++ b/pkg/storage/driver/cfgmaps.go
@@ -31,7 +31,7 @@ import (
 	"k8s.io/apimachinery/pkg/util/validation"
 	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var _ Driver = (*ConfigMaps)(nil)
diff --git a/pkg/storage/driver/driver.go b/pkg/storage/driver/driver.go
index 2987ba38e..661c32e52 100644
--- a/pkg/storage/driver/driver.go
+++ b/pkg/storage/driver/driver.go
@@ -21,7 +21,7 @@ import (
 
 	"github.com/pkg/errors"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var (
diff --git a/pkg/storage/driver/memory.go b/pkg/storage/driver/memory.go
index 430ab215f..79e7f090e 100644
--- a/pkg/storage/driver/memory.go
+++ b/pkg/storage/driver/memory.go
@@ -21,7 +21,7 @@ import (
 	"strings"
 	"sync"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var _ Driver = (*Memory)(nil)
diff --git a/pkg/storage/driver/records.go b/pkg/storage/driver/records.go
index 3b8f078fd..6b4efef3a 100644
--- a/pkg/storage/driver/records.go
+++ b/pkg/storage/driver/records.go
@@ -20,7 +20,7 @@ import (
 	"sort"
 	"strconv"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // records holds a list of in-memory release records
diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go
index eb215a755..2ab128c6b 100644
--- a/pkg/storage/driver/secrets.go
+++ b/pkg/storage/driver/secrets.go
@@ -31,7 +31,7 @@ import (
 	"k8s.io/apimachinery/pkg/util/validation"
 	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var _ Driver = (*Secrets)(nil)
diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go
index d5ab6b0a1..12bdd3ff4 100644
--- a/pkg/storage/driver/sql.go
+++ b/pkg/storage/driver/sql.go
@@ -30,7 +30,7 @@ import (
 	// Import pq for postgres dialect
 	_ "github.com/lib/pq"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var _ Driver = (*SQL)(nil)
diff --git a/pkg/storage/driver/util.go b/pkg/storage/driver/util.go
index 7f1bc716c..0abbe41b2 100644
--- a/pkg/storage/driver/util.go
+++ b/pkg/storage/driver/util.go
@@ -23,7 +23,7 @@ import (
 	"encoding/json"
 	"io"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 var b64 = base64.StdEncoding
diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go
index 6a77cbae6..5e8718ea0 100644
--- a/pkg/storage/storage.go
+++ b/pkg/storage/storage.go
@@ -22,8 +22,8 @@ import (
 
 	"github.com/pkg/errors"
 
-	rspb "helm.sh/helm/v4/pkg/release"
 	relutil "helm.sh/helm/v4/pkg/release/util"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 )
 


Test patch:
diff --git a/cmd/helm/completion_test.go b/cmd/helm/completion_test.go
index 3d8383519..b1089596b 100644
--- a/cmd/helm/completion_test.go
+++ b/cmd/helm/completion_test.go
@@ -22,7 +22,7 @@ import (
 	"testing"
 
 	chart "helm.sh/helm/v4/pkg/chart/v2"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 // Check if file completion should be performed according to parameter 'shouldBePerformed'
diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go
index e55c51ce4..62a6fdcd4 100644
--- a/cmd/helm/flags_test.go
+++ b/cmd/helm/flags_test.go
@@ -24,7 +24,7 @@ import (
 
 	"helm.sh/helm/v4/pkg/action"
 	chart "helm.sh/helm/v4/pkg/chart/v2"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/cmd/helm/get_all_test.go b/cmd/helm/get_all_test.go
index 60ea1161d..5de01bfcf 100644
--- a/cmd/helm/get_all_test.go
+++ b/cmd/helm/get_all_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetCmd(t *testing.T) {
diff --git a/cmd/helm/get_hooks_test.go b/cmd/helm/get_hooks_test.go
index 75cf448cc..fa18204e3 100644
--- a/cmd/helm/get_hooks_test.go
+++ b/cmd/helm/get_hooks_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetHooks(t *testing.T) {
diff --git a/cmd/helm/get_manifest_test.go b/cmd/helm/get_manifest_test.go
index b266620e7..96da50b75 100644
--- a/cmd/helm/get_manifest_test.go
+++ b/cmd/helm/get_manifest_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetManifest(t *testing.T) {
diff --git a/cmd/helm/get_metadata_test.go b/cmd/helm/get_metadata_test.go
index 28c3c3649..29ca77253 100644
--- a/cmd/helm/get_metadata_test.go
+++ b/cmd/helm/get_metadata_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetMetadataCmd(t *testing.T) {
diff --git a/cmd/helm/get_notes_test.go b/cmd/helm/get_notes_test.go
index 4ddd4c7a8..88d9584b8 100644
--- a/cmd/helm/get_notes_test.go
+++ b/cmd/helm/get_notes_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetNotesCmd(t *testing.T) {
diff --git a/cmd/helm/get_values_test.go b/cmd/helm/get_values_test.go
index 44610c103..0fe141cf7 100644
--- a/cmd/helm/get_values_test.go
+++ b/cmd/helm/get_values_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestGetValuesCmd(t *testing.T) {
diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go
index cfffa6dc7..a1d2b8505 100644
--- a/cmd/helm/helm_test.go
+++ b/cmd/helm/helm_test.go
@@ -33,7 +33,7 @@ import (
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
 	"helm.sh/helm/v4/pkg/cli"
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage"
 	"helm.sh/helm/v4/pkg/storage/driver"
 	"helm.sh/helm/v4/pkg/time"
diff --git a/cmd/helm/history_test.go b/cmd/helm/history_test.go
index 07f5134c6..0df64cd1c 100644
--- a/cmd/helm/history_test.go
+++ b/cmd/helm/history_test.go
@@ -20,7 +20,7 @@ import (
 	"fmt"
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestHistoryCmd(t *testing.T) {
diff --git a/cmd/helm/list_test.go b/cmd/helm/list_test.go
index 6a462ee28..6f9754459 100644
--- a/cmd/helm/list_test.go
+++ b/cmd/helm/list_test.go
@@ -20,7 +20,7 @@ import (
 	"testing"
 
 	chart "helm.sh/helm/v4/pkg/chart/v2"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/cmd/helm/plugin_test.go b/cmd/helm/plugin_test.go
index 4d2aa1a59..cbaf05321 100644
--- a/cmd/helm/plugin_test.go
+++ b/cmd/helm/plugin_test.go
@@ -26,7 +26,7 @@ import (
 	"github.com/spf13/cobra"
 	"github.com/spf13/pflag"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestManuallyProcessArgs(t *testing.T) {
diff --git a/cmd/helm/rollback_test.go b/cmd/helm/rollback_test.go
index 88dbf6524..a3bad2ef7 100644
--- a/cmd/helm/rollback_test.go
+++ b/cmd/helm/rollback_test.go
@@ -22,7 +22,7 @@ import (
 	"testing"
 
 	chart "helm.sh/helm/v4/pkg/chart/v2"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestRollbackCmd(t *testing.T) {
diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go
index 7e51849b1..7063e203f 100644
--- a/cmd/helm/status_test.go
+++ b/cmd/helm/status_test.go
@@ -21,7 +21,7 @@ import (
 	"time"
 
 	chart "helm.sh/helm/v4/pkg/chart/v2"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/cmd/helm/uninstall_test.go b/cmd/helm/uninstall_test.go
index f9bc71ec2..852823591 100644
--- a/cmd/helm/uninstall_test.go
+++ b/cmd/helm/uninstall_test.go
@@ -19,7 +19,7 @@ package main
 import (
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestUninstall(t *testing.T) {
diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go
index 595ca9fc2..9b414c90a 100644
--- a/cmd/helm/upgrade_test.go
+++ b/cmd/helm/upgrade_test.go
@@ -27,7 +27,7 @@ import (
 	chart "helm.sh/helm/v4/pkg/chart/v2"
 	"helm.sh/helm/v4/pkg/chart/v2/loader"
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestUpgradeCmd(t *testing.T) {
diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go
index 4c78ef6c1..b1cf20597 100644
--- a/pkg/action/action_test.go
+++ b/pkg/action/action_test.go
@@ -28,7 +28,7 @@ import (
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
 	"helm.sh/helm/v4/pkg/registry"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage"
 	"helm.sh/helm/v4/pkg/storage/driver"
 	"helm.sh/helm/v4/pkg/time"
diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go
index b39ffe022..38f25d9ab 100644
--- a/pkg/action/hooks_test.go
+++ b/pkg/action/hooks_test.go
@@ -26,7 +26,7 @@ import (
 
 	chart "helm.sh/helm/v4/pkg/chart/v2"
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func podManifestWithOutputLogs(hookDefinitions []release.HookOutputLogPolicy) string {
diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go
index 09715daf3..869055657 100644
--- a/pkg/action/install_test.go
+++ b/pkg/action/install_test.go
@@ -36,7 +36,7 @@ import (
 	chart "helm.sh/helm/v4/pkg/chart/v2"
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
diff --git a/pkg/action/list_test.go b/pkg/action/list_test.go
index a7eb8a920..e41949310 100644
--- a/pkg/action/list_test.go
+++ b/pkg/action/list_test.go
@@ -21,7 +21,7 @@ import (
 
 	"github.com/stretchr/testify/assert"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage"
 )
 
diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go
index b4cdb47c8..c6374523e 100644
--- a/pkg/action/release_testing.go
+++ b/pkg/action/release_testing.go
@@ -28,7 +28,7 @@ import (
 	v1 "k8s.io/api/core/v1"
 
 	chartutil "helm.sh/helm/v4/pkg/chart/v2/util"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 const (
diff --git a/pkg/action/uninstall_test.go b/pkg/action/uninstall_test.go
index eca9e6ad8..071b76943 100644
--- a/pkg/action/uninstall_test.go
+++ b/pkg/action/uninstall_test.go
@@ -23,7 +23,7 @@ import (
 	"github.com/stretchr/testify/assert"
 
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func uninstallAction(t *testing.T) *Uninstall {
diff --git a/pkg/action/upgrade_test.go b/pkg/action/upgrade_test.go
index 069578025..303f49e70 100644
--- a/pkg/action/upgrade_test.go
+++ b/pkg/action/upgrade_test.go
@@ -30,7 +30,7 @@ import (
 	"github.com/stretchr/testify/require"
 
 	kubefake "helm.sh/helm/v4/pkg/kube/fake"
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/pkg/release/util/filter_test.go b/pkg/release/util/filter_test.go
index 2037ef157..5d2564619 100644
--- a/pkg/release/util/filter_test.go
+++ b/pkg/release/util/filter_test.go
@@ -19,7 +19,7 @@ package util // import "helm.sh/helm/v4/pkg/release/util"
 import (
 	"testing"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestFilterAny(t *testing.T) {
diff --git a/pkg/release/util/kind_sorter_test.go b/pkg/release/util/kind_sorter_test.go
index cd40fe459..00d80ecf2 100644
--- a/pkg/release/util/kind_sorter_test.go
+++ b/pkg/release/util/kind_sorter_test.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"testing"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestKindSorter(t *testing.T) {
diff --git a/pkg/release/util/manifest_sorter_test.go b/pkg/release/util/manifest_sorter_test.go
index 281f24924..4360013e5 100644
--- a/pkg/release/util/manifest_sorter_test.go
+++ b/pkg/release/util/manifest_sorter_test.go
@@ -22,7 +22,7 @@ import (
 
 	"sigs.k8s.io/yaml"
 
-	"helm.sh/helm/v4/pkg/release"
+	release "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestSortManifests(t *testing.T) {
diff --git a/pkg/release/util/sorter_test.go b/pkg/release/util/sorter_test.go
index 6e92eef5c..8a766efc9 100644
--- a/pkg/release/util/sorter_test.go
+++ b/pkg/release/util/sorter_test.go
@@ -20,7 +20,7 @@ import (
 	"testing"
 	"time"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 	helmtime "helm.sh/helm/v4/pkg/time"
 )
 
diff --git a/pkg/storage/driver/cfgmaps_test.go b/pkg/storage/driver/cfgmaps_test.go
index c93ef8ea4..8ba6832fa 100644
--- a/pkg/storage/driver/cfgmaps_test.go
+++ b/pkg/storage/driver/cfgmaps_test.go
@@ -21,7 +21,7 @@ import (
 
 	v1 "k8s.io/api/core/v1"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestConfigMapName(t *testing.T) {
diff --git a/pkg/storage/driver/memory_test.go b/pkg/storage/driver/memory_test.go
index 999649635..ee547b58b 100644
--- a/pkg/storage/driver/memory_test.go
+++ b/pkg/storage/driver/memory_test.go
@@ -21,7 +21,7 @@ import (
 	"reflect"
 	"testing"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestMemoryName(t *testing.T) {
diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go
index 359f2d079..199da6505 100644
--- a/pkg/storage/driver/mock_test.go
+++ b/pkg/storage/driver/mock_test.go
@@ -31,7 +31,7 @@ import (
 	kblabels "k8s.io/apimachinery/pkg/labels"
 	corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func releaseStub(name string, vers int, namespace string, status rspb.Status) *rspb.Release {
diff --git a/pkg/storage/driver/records_test.go b/pkg/storage/driver/records_test.go
index b1bb051d5..34b2fb80c 100644
--- a/pkg/storage/driver/records_test.go
+++ b/pkg/storage/driver/records_test.go
@@ -20,7 +20,7 @@ import (
 	"reflect"
 	"testing"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestRecordsAdd(t *testing.T) {
diff --git a/pkg/storage/driver/secrets_test.go b/pkg/storage/driver/secrets_test.go
index 37ecc20dd..7affc81ab 100644
--- a/pkg/storage/driver/secrets_test.go
+++ b/pkg/storage/driver/secrets_test.go
@@ -21,7 +21,7 @@ import (
 
 	v1 "k8s.io/api/core/v1"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestSecretName(t *testing.T) {
diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go
index 8d7b88475..bd2918aad 100644
--- a/pkg/storage/driver/sql_test.go
+++ b/pkg/storage/driver/sql_test.go
@@ -23,7 +23,7 @@ import (
 	sqlmock "github.com/DATA-DOG/go-sqlmock"
 	migrate "github.com/rubenv/sql-migrate"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 )
 
 func TestSQLName(t *testing.T) {
diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go
index 80011520e..056b7f5f5 100644
--- a/pkg/storage/storage_test.go
+++ b/pkg/storage/storage_test.go
@@ -23,7 +23,7 @@ import (
 
 	"github.com/pkg/errors"
 
-	rspb "helm.sh/helm/v4/pkg/release"
+	rspb "helm.sh/helm/v4/pkg/release/v1"
 	"helm.sh/helm/v4/pkg/storage/driver"
 )