From cc00e01e8c6a5ce9ddf2a304831181a7bc9ff4d5 Mon Sep 17 00:00:00 2001 From: jordanstephens Date: Mon, 2 Feb 2026 14:08:11 -0800 Subject: [PATCH 1/2] prefer remote stack to local. Fixes #2655 --- src/pkg/stacks/manager.go | 17 ++++------------- src/pkg/stacks/manager_test.go | 6 +++--- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/pkg/stacks/manager.go b/src/pkg/stacks/manager.go index d7c2c246c..3d961a7a8 100644 --- a/src/pkg/stacks/manager.go +++ b/src/pkg/stacks/manager.go @@ -63,23 +63,14 @@ func (sm *manager) List(ctx context.Context) ([]ListItem, error) { return nil, fmt.Errorf("failed to list local stacks: %w", err) } // Merge remote and local stacks into a single list of type StackOption, - // prefer local if both exist, but keep remote deployed time if available + // prefer remote if both exist stackMap := make(map[string]ListItem) + for _, local := range localStacks { + stackMap[local.Name] = local + } for _, remote := range remoteStacks { stackMap[remote.Name] = remote } - for _, local := range localStacks { - remote, exists := stackMap[local.Parameters.Name] - if exists { - local.DeployedAt = remote.DeployedAt - local.Default = remote.Default - stackMap[local.Parameters.Name] = local - } else { - stackMap[local.Parameters.Name] = ListItem{ - Parameters: local.Parameters, - } - } - } stackList := make([]ListItem, 0, len(stackMap)) for _, stack := range stackMap { diff --git a/src/pkg/stacks/manager_test.go b/src/pkg/stacks/manager_test.go index 366a7b7c1..837b376e6 100644 --- a/src/pkg/stacks/manager_test.go +++ b/src/pkg/stacks/manager_test.go @@ -416,10 +416,10 @@ GOOGLE_REGION=us-central1 if !exists { t.Error("Expected to find sharedstack") } - assert.Equal(t, "us-west-2", sharedStack.Region, "Expected shared stack to use local region us-west-2") + assert.Equal(t, "us-east-1", sharedStack.Region, "Expected shared stack to use local region us-east-1") assert.Equal(t, client.ProviderAWS, sharedStack.Provider, "Expected shared stack to use provider aws") - assert.Equal(t, modes.ModeAffordable, sharedStack.Mode, "Expected shared stack to use mode AFFORDABLE") - assert.Equal(t, "default", sharedStack.Variables["AWS_PROFILE"], "Expected shared stack to have AWS_PROFILE variable from local stack") + assert.Equal(t, modes.ModeUnspecified, sharedStack.Mode, "Expected shared stack to use mode UNSPECIFIED") + assert.Equal(t, "", sharedStack.Variables["AWS_PROFILE"], "Expected shared stack to have empty AWS_PROFILE variable") assert.Equal(t, deployedAt.Local().Format(time.RFC3339), sharedStack.DeployedAt.Local().Format(time.RFC3339), "Expected shared stack to have deployment time from remote") // Check remote-only stack exists From eaeac74b8cf2e6e0ce54e77d3f576fb33b149d66 Mon Sep 17 00:00:00 2001 From: Jordan Stephens Date: Tue, 3 Feb 2026 10:09:51 -0800 Subject: [PATCH 2/2] Update src/pkg/stacks/manager_test.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/pkg/stacks/manager_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/stacks/manager_test.go b/src/pkg/stacks/manager_test.go index 837b376e6..6212da884 100644 --- a/src/pkg/stacks/manager_test.go +++ b/src/pkg/stacks/manager_test.go @@ -416,7 +416,7 @@ GOOGLE_REGION=us-central1 if !exists { t.Error("Expected to find sharedstack") } - assert.Equal(t, "us-east-1", sharedStack.Region, "Expected shared stack to use local region us-east-1") + assert.Equal(t, "us-east-1", sharedStack.Region, "Expected shared stack to use remote region us-east-1") assert.Equal(t, client.ProviderAWS, sharedStack.Provider, "Expected shared stack to use provider aws") assert.Equal(t, modes.ModeUnspecified, sharedStack.Mode, "Expected shared stack to use mode UNSPECIFIED") assert.Equal(t, "", sharedStack.Variables["AWS_PROFILE"], "Expected shared stack to have empty AWS_PROFILE variable")