This PR is large, but the core change is narrow: runtime selection moved from the old v2 ProviderStore model to ProviderClass, with a new namespaced ProviderClass as the default.
If you want a guided tour, review it in this order. The goal is to confirm the semantic contract first, then check the controller/runtime enforcement, then validate that the e2es actually prove the contract.
Start here:
apis/externalsecrets/v1/secretstore_types.goapis/externalsecrets/v1/externalsecret_types.goapis/externalsecrets/v1beta1/externalsecret_types.goapis/externalsecrets/v1alpha1/pushsecret_types.goFocus on these questions:
ProviderClass?ProviderClass resolution uses the SecretStore namespace?ClusterSecretStore may only target ClusterProviderClass?What matters:
Read next:
pkg/controllers/externalsecret/externalsecret_controller.gopkg/controllers/pushsecret/pushsecret_controller.gopkg/controllers/providerclass/controller.gocmd/controller/root.goFocus on these questions:
ProviderClass always resolve in the SecretStore namespace, not the workload namespace?ClusterSecretStore -> ProviderClass path rejected early and clearly?What matters:
Skim the removals as one story:
apis/externalsecrets/v2alpha1/*pkg/controllers/providerstore/*runtime/clientmanager/providerstore.goFocus on these questions:
ProviderClass path fully replace the removed stack, or is there a hidden gap?What matters:
Give this a separate pass:
pkg/controllers/pushsecret/pushsecret_controller.gopkg/controllers/pushsecret/pushsecret_controller_test.goFocus on these questions:
SecretStore?What matters:
Finish in the e2es:
e2e/framework/v2/helpers.goe2e/suites/provider/cases/fake/runtime_ref_v2.goe2e/suites/provider/cases/fake/operational_v2.goe2e/suites/provider/cases/common/*Focus on these questions:
ProviderClass and ClusterProviderClass resolution?ClusterSecretStore -> ProviderClass?What matters:
Only after the semantic review above:
config/crds/*deploy/crds/bundle.yamldocs/api/spec.mdtests/__snapshot__/*Use these as confirmation that the public surface matches the implementation. Do not start here.
If you are presenting this PR live, I would center the walkthrough on four claims:
ProviderClass.ProviderClass resolution is anchored to the SecretStore namespace.ClusterSecretStore is intentionally restricted to ClusterProviderClass.ProviderStore stack was intentionally removed rather than kept as a compatibility layer.If you want a compact live narrative, use this: